<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">

            /**
             * 运算符也叫操作符
             *  通过运算符可以对一个或多个值进行运算,并获取运算结果
             *  比如: typeof就是运算符,可以来获得一个值的类型
             *      它会将该值的类型以字符串的形式返回
             *          number string boolean undefined object
             *
             *      算数运算符
             *          当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算。
             *              任何值和NaN做运算都得到NaN。
             *
             *          +
             *              + 可以将两个值进行加法运算,并将结果返回
             *                  如果对两个字符串进行加法运算,则会做拼串
             *                      会将两个字符串拼接为一个字符串,并返回
             *                任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作。
             *          -
             *              - 可以将两个值进行减法运算,并将结果返回
             *                  - 除了字符串加法,减乘除在运算的时候,都是将别的类型的数转换成Number进行运算。
             *          *
             *              - 可以对两个值进行乘法运算
             *          /
             *              - 可以对两个值进行除法运算
             *          %
             *              % 可以对两个值进行取余运算
             */

            var a = 123;
            var result = typeof a;
            console.log(result);

            result = result + 1;

            result = 456 + 789;

            result = true + 1; //2
            result = true + false; //1

            result = 2 + null; //null转换成数字是0

            result = 2 + NaN;

            result = "你好" + "大帅哥";

            result = 123 + "1"; //1231

            result = true + "567"; //true567

            var str = "锄禾日当午," +
                        "汗滴禾下土," +
                        "谁知盘中餐," +
                        "粒粒皆辛苦";

            console.log(str);

            //任何值和字符串相加都会转换为字符串,并做拼串操作
            /**
             * 我们可以利用这一特点,来将一个任意的数据类型转换为String
             *      我们只需要为任意的数据类型 + 一个 ""即可将其转换为String
             *      这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数。
             * @type {string}
             */
            var c = 123;

            c = c + ""; //"123"

            c = null;

            c = c + ""; //"null"
            console.log(typeof c);
            console.log(c);


            result = 1 + 2 + "3"; //33

            result = "1" + 2 + 3; //123

            console.log(typeof result);
            console.log(result);

            result = 100 - 5; //95
            console.log("result = " + result);

            result = 100 - true; //99
            console.log("result = " + result);

            result = 100 - "1"; //99
            console.log("result = " + result);

            result = 2 * 2; //4
            console.log("result = " + result);

            result = 2 * "8"; //16
            console.log("result = " + result);

            result = 2 * undefined; //NaN
            console.log("result = " + result);

            /**
             * 任何值做减乘除运算时都会自动转换成Number
             *      我们可以利用这一特点做隐式类型转换
             *          可以通过为一个值 -0 *1 /1 来将其转换为Number
             *          原理和Number()函数一样,使用起来简单。
             * @type {number}
             */
            result = 2 * null; //0
            console.log("result = " + result);

            var d = "123";

            console.log(typeof d);
            console.log(d);

            result = 9 % 3;
            console.log("result = " + result);


            result = 9 % 4;
            console.log("result = " + result);

            result = 9 % 5;

        </script>
    </head>
    <body>

    </body>
</html>